package com.yzqp.config_server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.context.config.annotation.RefreshScope;

/**
 * 在分布式系统中，由于服务数量巨多，为了方便服务配置文件统一管理，实时更新，所以需要分布式配置中心组件。在Spring Cloud中，
 * 有分布式配置中心组件spring cloud config ，它支持配置服务放在配置服务的内存中（即本地），也支持放在远程Git仓库中。
 * 在spring cloud config 组件中，分两个角色，一是config server，二是config client。
 *
 * http请求地址和资源文件映射如下:
 *
 * /{application}/{profile}[/{label}]
 * /{application}-{profile}.yml
 * /{label}/{application}-{profile}.yml
 * /{application}-{profile}.properties
 * /{label}/{application}-{profile}.properties
 *
 * 配置中心可以集成 消息总线 进行 热加载配置文件（项目不用重启，只要修改配置文件就可以）
 * 然后通过post 请求 http://localhost:8881/actuator/bus-refresh  就能热加载
 *
 * 客户端版本   Spring Cloud Bus做配置更新的步骤:
 *
 * 1.提交代码触发post给客户端A发送bus/refresh
 * 2.客户端A接收到请求从Server端更新配置并且发送给Spring Cloud Bus
 * 3.Spring Cloud bus接到消息并通知给其它客户端
 * 4.其它客户端接收到通知，请求Server端获取最新配置
 * 5.全部客户端均获取到最新的配置
 *
 * 配置中心服务端版本   Spring Cloud Bus做配置更新的步骤:
 * 1.提交代码触发post给Server端发送bus/refresh
 * 2.Server端接收到请求并发送给Spring Cloud Bus
 * 3.Spring Cloud bus接到消息并通知给其它客户端
 * 4.其它客户端接收到通知，请求Server端获取最新配置
 * 5.全部客户端均获取到最新的配置
 *
 *
 */
@SpringBootApplication
@EnableConfigServer
@RefreshScope
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }

}
